package com.rcache.core.persistence;


import com.rcache.core.Element;
import com.rcache.core.cache.Rcache;
import com.rcache.core.exception.DataPersistenceException;

import java.io.FileNotFoundException;
import java.io.IOException;

/**
 * @desc 数据持久化
 * @author gzy
 * @time 2022-06-04
 */
public interface IDataPersistence {
    /**
     * @desc 添加持久化元素
     * @return 是否操作成功
     */
    boolean put(Rcache cache,Element element) throws DataPersistenceException;

    /**
     * @desc 更新持久化元素
     * @return 是否操作成功
     */
    boolean replace(Rcache cache,Element element) throws DataPersistenceException;
    /**
     * @desc 删除持久化元素
     * @return 是否操作成功
     */
    boolean remove(Rcache cache,Element element) throws DataPersistenceException;

    /**
     * @desc 根据缓存名称与元素key值获取元素
     * @return 是否操作成功
     */
    Element get(Rcache cache,Object ElementKey) throws DataPersistenceException;

    /**
     * @desc 得到持久化元素的数量
     * @return 数量
     */
    Integer getSize(Rcache cache) throws DataPersistenceException;
    /**
     * @desc 尝试从本地恢复缓存
     * @return  是否从本地恢复成功
     */
    boolean tryRestoreFromLocal(Rcache cache) throws DataPersistenceException;
}
